package cn.psvmc.cxzapi.service.system;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.system.THelpMapper;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.system.THelp;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 帮助中心表 服务实现类
 * @Author auto
 * @Date 2024-08-29
 */
@Service
public class THelpService extends AbstractService<THelpMapper, THelp> {

    @Resource
    private THelpMapper tHelpMapper;

    /**
     * @Date auto 2024-08-29 新增帮助中心表
     * @Param tHelp 帮助中心表
     * @Return int
     */
    public int add(THelp tHelp) {
        return tHelpMapper.insert(tHelp);
    }

    /**
     * @Date auto 2024-08-29 更新帮助中心表
     * @Param tHelp 帮助中心表模型
     * @Return int
     */
    public int edit(THelp tHelp) {
        checkObjAndVersion(tHelp.getHelpid(), tHelp.getRversion());//校验对象和版本号

        // 字段为null 不更新
        return tHelpMapper.updateById(tHelp);
    }

    /**
     * @Date auto 2024-08-29 删除帮助中心表
     * @Param id 唯一id
     * @Param rversion 版本号
     * @Return int
     */
    public int delete(Integer id, Integer rversion) {
        checkObjAndVersion(id, rversion);//校验对象和版本号

        return tHelpMapper.deleteById(id);
    }

    //校验对象和版本号
    private void checkObjAndVersion(Integer id, Integer rversion) {
        // 查询帮助中心表详情
        THelp tHelp = tHelpMapper.selectById(id);
        if (tHelp == null) {
            throw new ServiceException("未查询到对应的帮助中心表信息！");
        }

        // 比较数据版本号
        if (!rversion.equals(tHelp.getRversion())) {
            throw new ServiceException("数据已更新，请刷新后重试！");
        }
    }

    /**
     * @Date auto 2024-08-29 查询帮助中心表列表
     * @Param iPage 分页
     * @Return com.baomidou.mybatisplus.core.metadata.IPage<cn.psvmc.cxzapi.model.system.THelp>
     */
    public List<Map<String, Object>> list(SearchEntity entity) {
        return tHelpMapper.listAll(entity);
    }
}
